linux command

csplit

Linux Command – csplit ใช้ในการแตก file ออกมาเป็น file เล็กๆหลาย file ตามจำนวนบรรทัดที่กำหนด

 

คำสั่ง

จากตัวอย่าง file มีทั้งหมด 18 บรรทัด

$ cat file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

 

1. ทำการแบ่ง file ตามจำนวนบรรทัดที่กำหนด

csplit <filename> <number of line> <number of line> ….

จากตัวอย่างคือ ใส่ 2 4 ลงไป program จะทำการแบ่ง file1 ออกมาแค่บรรทัดที่1 ส่วนบรรทัดที่2-3 จะไปอยู่ที่file2 และตั้งแต่บรรทัดที่4 เป็นต้นไปจะไปอยู่ใน file สุดท้าย

$ ls -ltr
total 4
-rw-r--r-- 1 root root 45 May 7 12:27 file
$ cat file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ls -ltr 
total 4
-rw-r--r-- 1 root root 45 May 7 12:27 file
$ csplit file 2 4
2
4
39
$ ls -ltr
total 16
-rw-r--r-- 1 root root 45 May 7 12:27 file
-rw-r--r-- 1 root root 39 May 7 12:33 xx02
-rw-r--r-- 1 root root 4 May 7 12:33 xx01
-rw-r--r-- 1 root root 2 May 7 12:33 xx00
$ cat xx00
1
$ cat xx01
2
3
$ cat xx02
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

 

2. สามารถตั้งชื่อ prefix ของ file ที่แบ่งออกมาได้

csplit -f  <filename> <number of line> <number of line> ….

ใช้ -f option ตามด้วย prefix ที่ต้องการ และ -b option สำหรับกับหนดรูปแบบเลขลำดับของ prefix sequence

$ sudo csplit -f 'test' -b '%03d' file 2 4
2
4
39
$ 
$ ls -ltr
total 16
-rw-r--r-- 1 root root 45 May 7 12:27 file
-rw-r--r-- 1 root root 39 May 7 12:36 test002
-rw-r--r-- 1 root root 4 May 7 12:36 test001
-rw-r--r-- 1 root root 2 May 7 12:36 test000

 

โครงสร้างคำสั่ง

csplit [OPTION]... FILE PATTERN...

 

รายละเอียด

เป็นคำสั่งที่ใช้ในการแตก file ออกมาเป็น file เล็กๆหลาย file ตามจำนวนบรรทัดที่กำหนด สามาถกำหนดได้ว่าจะให้สร้าง file ด้วย prefix อย่างไร

 

Option

 Mandatory arguments to long options are mandatory for short options too.

 -b, --suffix-format=FORMAT
 use sprintf FORMAT instead of %02d

 -f, --prefix=PREFIX
 use PREFIX instead of 'xx'

 -k, --keep-files
 do not remove output files on errors

 --suppress-matched
 suppress the lines matching PATTERN

 -n, --digits=DIGITS
 use specified number of digits instead of 2

 -s, --quiet, --silent
 do not print counts of output file sizes

 -z, --elide-empty-files
 remove empty output files

 --help display this help and exit

 --version
 output version information and exit

 Each PATTERN may be:
 INTEGER
 copy up to but not including specified line number

 /REGEXP/[OFFSET]
 copy up to but not including a matching line

 %REGEXP%[OFFSET]
 skip to, but not including a matching line

 {INTEGER}
 repeat the previous pattern specified number of times

 {*} repeat the previous pattern as many times as possible

 A line OFFSET is a required '+' or '-' followed by a positive integer.

 

กลุ่มคำสั่ง

 

Reference:

คำสั่ง Unix – Linux Command

Linux, Unix

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com

One Thought to “csplit – Linux Command คำสั่งแตก file ตามจำนวนบรรทัด”

Leave a Reply